#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//void move(int* n, int sz)
//{
//    int i = 0;
//    int tmp = *n;
//    for (i = 0; i < sz - 1; i++)
//    {
//        *(n + i) = *(n + i + 1);
//    }
//    *(n + sz - 1) = tmp;
//}
//
//int removeDuplicates(int* nums, int numsSize) {
//    int i = 0;
//    for (i = 1; i < numsSize; i++)
//    {
//        if (*(nums + i) == *(nums + i - 1))
//        {
//            move(nums + i, numsSize-i);
//            numsSize--;
//            i--;
//        }
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        printf("%d", *(nums + i));
//    }
//    return numsSize;
//}
//
//int main()
//{
//    int arr[] = { 0,0,1,1,1,2,2,3,3,4 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    removeDuplicates(arr, sz);
//    return 0;
//}



#include <stdio.h>
#include <stdlib.h>

int judgeint(const void* a, const void* b)
{
    return (*(int*)a - *(int*)b);
}

void move(int* n, int sz)
{
    int i = 0;
    int tmp = *n;
    for (i = 0; i < sz - 1; i++)
    {
        *(n + i) = *(n + i + 1);
    }
    *(n + sz - 1) = tmp;
}

void reverse(int* arr, int sz)
{
    int i = 0;
    qsort(arr, sz, sizeof(int), judgeint);
    for (i = 0; i < sz; i++)
    {
        if (*(arr + i) == 0)
        {
            move(arr + i, sz - i);
            sz--;
            i--;
        }
    }
}

void print(int* arr, int sz)
{
    int i = 0;
    printf("[");
    for (i = 0; i < sz; i++)
    {
        printf("%d", arr[i]);
        if (i != sz - 1)
        {
            printf(",");
        }
    }
    printf("]");
}

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    reverse(nums1, nums1Size);
    reverse(nums2, nums2Size);
    if (m == 0)
    {
        print(nums2, n);
    }
    else if(n == 0)
    {
        print(nums1, m);
    }
    int i = 0;
    int j = 0;
    int a = 0;
    int arr[10] = {0};
    for (i = 0, j = 0; i < m && j < n; )
    {
        if (nums1[i] > nums2[j])
        {
            arr[a] = nums2[j];
            a++;
            j++;
        }
        else
        {
            arr[a] = nums1[i];
            a++;
            i++;
        }
    }
    if (j == n)
    {
        for (i; i < m; i++)
        {
            arr[a++] = nums1[i];
        }
    }
    if (i == m)
    {
        for (j; j < n; j++)
        {
            arr[a++] = nums2[j];
        }
    }
    print(arr, m + n);
}

int main()
{
    int arr1[] = { 1,2,3,0,0,0 };
    int arr2[] = { 2,5,6 };
    merge(arr1, 6, 3, arr2, 3, 3);
    return 0;
}